From: emellor@ewan Date: Thu, 22 Sep 2005 10:35:35 +0000 (+0100) Subject: This patch adds a check in xend that prevents a user from trying to X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~16780^2~7 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3f69932eedf10d5b5b22d6d39ae7aed64f815e6c;p=xen.git This patch adds a check in xend that prevents a user from trying to destroy Dom0. Currently, xm does not return an error for this case. Xend tries to destroy dom0 and leaves the system in an unstable state. Subsequent attempts to create a domain result in the following error message: Error: Error creating domain: (106, 'Transport endpoint is already \ connected') This will fix bugzilla bug #243 Signed-off-by: Dan Smith --- diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index 1f3b351681..76d4fce4a9 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -42,6 +42,7 @@ from xen.xend.xenstore.xsutil import GetDomainPath __all__ = [ "XendDomain" ] SHUTDOWN_TIMEOUT = 30 +PRIV_DOMAIN = 0 def is_dead(dom): return dom['crashed'] or dom['shutdown'] or ( @@ -163,7 +164,7 @@ class XendDomain: self.domain_restarts() def dom0_setup(self): - dom0 = self.domain_lookup(0) + dom0 = self.domain_lookup(PRIV_DOMAIN) if not dom0: dom0 = self.dom0_unknown() dom0.dom0_init_store() @@ -331,7 +332,7 @@ class XendDomain: return self.domains.get(id) def dom0_unknown(self): - dom0 = 0 + dom0 = PRIV_DOMAIN uuid = None info = self.xen_domain(dom0) dompath = GetDomainPath(dom0) @@ -499,6 +500,10 @@ class XendDomain: @param domid: domain id """ + + if domid == PRIV_DOMAIN: + raise XendError("Cannot destroy priviliged domain %i" % domid) + self.domain_restart_schedule(domid, reason, force=True) dominfo = self.domain_lookup(domid) if dominfo: